iT邦幫忙

0

sui move 學習 - 從頭開始 教學 - 2

  • 分享至 

  • xImage
  •  

// 結構

結構,就是去宣告我們所要生成的物件,他的名稱,以及它有哪些內容、功能。
例如三明治製作的範例中,他就火腿、麵包、三明治等結構體。
這邊進行宣告並不是他已經生成,而是一個雛形,就像模具一樣,我們先朔造了一個模具,未來我們這個物件時,只要告訴系統我要生成這個東西,系統便會按照模具給我們生成這個物件。

struct Ham has key { id:UID }

struct > 名稱 > has > 賦能 > {此結構的內容}
名稱 - 開頭皆為大寫,以作為區分。

賦能 - 為move的特點,每個結構可以賦予其功能,有key , store , drop , copy.
在運用上,依照此結構的用途來進行賦能,這些功能的用法之後有機會再來說明。

內容 - 在suimove的結構,開頭一定都是以 id:UID為主,如果沒有這個內容,就代表這個結構不是sui的物件,只有內容中有這個編碼的,才會被sui系統斷定為自己人。 id:UID的意思即是賦予每個參考這個結構體所生成的物件,都有一個hash ID,而雖然是同樣的模具製造,但每個物件都有自己獨特的ID,用於區分它們。
例如,我今天要製造一把劍,但每次製造的劍他的數值是隨機的,此時為了區分它們的不同,所以會給予ID,不過這只是其中一個原因,後續要去進行交易、改變、銷毀,都會運用到,當然他還有許多可能性,等待被發掘運用。

內容編碼部分,id : UID。
id 是內容的名稱 > :是用於定義此名稱屬於什麼類型 > UID 即是調用上面框架,表示它是這樣類型的物件。
例如,我做了一個Hero的結構

    struct Hero has key, store {
        id: UID,    //id
        hp: u64,    //英雄血量
        experience: u64,  //角色經驗值
        sword: Option<Sword>,   //是否裝備劍
        name: string::String, //英雄名稱
    }

在之後函數調用此結構,進行生成時,會再將要生成的英雄數值,填入相對應的內容中,後面再繼續來說明。

// 常數

常數與大部分語言相同,主要就是賦予某東西數值,而move中也會看到,將錯誤訊息寫在常數中,他對應得值,即是報錯時的代碼。

const HAM_PRICE: u64 = 10;  //火腿價值10元
const EInsufficientFunds: u64 = 001; //錯誤代碼:告訴使用者,資金不足導致系統錯誤

const > 名稱 > :(定義類型) > 類型 > = > 數值。
名稱 - 多以大寫開頭,可以全大寫然後用_分隔單字,也可用大小寫穿插。依照個人習慣。
類型 - u8 , u16 , u64 , u128 ,目前sui中最常使用的就是u64。

先告一段落,後面慢慢進行~


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言